package juegocartas.mus;

/**
 * Lance de juego.
 * @author jorge
 */
public class LanceJuego implements Lance {

    public boolean esMayor(GrupoCartas grupoCartas1, GrupoCartas grupoCartas2) {

        int puntosJugadorUno = obtenerPuntosJuego(grupoCartas1);
        int puntosJugadorDos = obtenerPuntosJuego(grupoCartas2);

        return puntosJugadorUno > puntosJugadorDos;
    }

    private int obtenerPuntosJuego(GrupoCartas cartas) {
        
        int puntosJuego = UtilidadesMus.obtenerPuntosJuego(cartas);
        
        if (puntosJuego == 31) {
            return 42;
        } else if(puntosJuego == 32) {
            return 41;
        } else {
            return puntosJuego;
        }
    }

    public String getNombre() {
        return "juego";
    }

    public boolean esParOJuego() {
        return true;
    }

    public boolean tieneCartasParaJugar(GrupoCartas grupoCartas) {
        int puntos = UtilidadesMus.obtenerPuntosJuego(grupoCartas);
        return puntos >= 31;
    }

    private int contarPuntosJugada(GrupoCartas cartas) {
        int puntos = UtilidadesMus.obtenerPuntosJuego(cartas);

        int amarracos = puntos == 31 ? 3 : (puntos > 31 ? 2 : 0);
        return amarracos;
    }

    public int contabilizadPuntosSumados(Equipo equipoGanador, boolean sePaso) {
        int puntos = 0;
        for (JugadorMus jugador : equipoGanador.getJugadores()) {
            puntos += contarPuntosJugada(jugador.getCartas());            
        }
        return puntos;
    }
}
